#ifndef LASERBEHAVIOR_H
#define LASERBEHAVIOR_H

#include "GameBehavior.h"
#include "Direction.h"
#include "Activatable.h"
#include "Targetsetable.h"
#include "GameStep.h"

class LaserBehavior: public GameBehavior
{
public:
	LaserBehavior();
	virtual ~LaserBehavior();

	void SetActivator(GameObject* laser, Targetsetable* targetsetable);
	void SetShootDirection(const Direction& direction);

	virtual void GenerateSteps(Board& board);
	virtual void Execute();

protected:

private:
	void Clear();

	GameObject* activatableObject;
	Activatable* activatableInterface;
	std::list<GameStep*> steps;
	Direction shootDirection;
	Targetsetable* targetsetableInterface;
};

#endif //LASERBEHAVIOR_H
